home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Misc / bgui / Examples / Source / Images.c < prev    next >
C/C++ Source or Header  |  2000-05-09  |  6KB  |  224 lines

  1. /*
  2.  * @(#) $Header: /cvsroot/bgui/examples/Images.c,v 41.11 2000/05/09 20:33:41 mlemos Exp $
  3.  *
  4.  * Images.c
  5.  *
  6.  * (C) Copyright 1998 Manuel Lemos.
  7.  * (C) Copyright 1995 Jaba Development.
  8.  * (C) Copyright 1995 Jan van den Baard.
  9.  * All Rights Reserved.
  10.  *
  11.  * $Log: Images.c,v $
  12.  * Revision 41.11  2000/05/09 20:33:41  mlemos
  13.  * Bumped to revision 41.11
  14.  *
  15.  * Revision 1.2  2000/05/09 19:58:58  mlemos
  16.  * Merged with the branch Manuel_Lemos_fixes.
  17.  *
  18.  * Revision 1.1.2.1  1998/02/28 17:45:23  mlemos
  19.  * Ian sources
  20.  *
  21.  *
  22.  */
  23.  
  24. /* Execute me to compile with DICE V3.0
  25. dcc Images.c -proto -mi -ms -mRR -lbgui
  26. quit
  27. */
  28.  
  29. #include "DemoCode.h"
  30.  
  31. /*
  32. **    Generated with IconEdit.
  33. **/
  34. CHIP( UWORD ) HelpI1Data[] =
  35. {
  36. /* Plane 0 */
  37.     0x0000,0x0020,0x0000,0x00A0,0x0020,0x0000,0x0143,0xE020,
  38.     0x0000,0x0A8F,0xF820,0x0000,0x051C,0x7C3F,0xE000,0x0038,
  39.     0x3E00,0x0000,0x0038,0x3E00,0x0800,0x00FF,0xBFFF,0x0800,
  40.     0x003C,0x3E00,0x0800,0x07FF,0xFF3F,0x0800,0x0000,0x7C00,
  41.     0x0800,0x06FF,0x7FFD,0x0800,0x0000,0x7000,0x0800,0x07F7,
  42.     0xFAE7,0x0800,0x0000,0xE000,0x0800,0x07DE,0xFBFD,0x0800,
  43.     0x0000,0xC000,0x0800,0x06FD,0xF7EF,0x0800,0x0001,0xC000,
  44.     0x0800,0x0003,0xE000,0x0800,0x0003,0xE1B7,0x0800,0x0003,
  45.     0xE000,0x0800,0x0001,0xC000,0x0800,0x0000,0x0000,0x0800,
  46.     0x0000,0x0000,0x0800,0x7FFF,0xFFFF,0xF800,
  47. /* Plane 1 */
  48.     0xFFFF,0xFFD0,0x0000,0xFEAF,0xFFDC,0x0000,0xFD5C,0x1FDF,
  49.     0x0000,0xE0B0,0x27DF,0xC000,0xF06B,0x9BC0,0x0000,0xFFD7,
  50.     0xDDFF,0xF000,0xFFD7,0xDDFF,0xF000,0xFF18,0x5C00,0xF000,
  51.     0xFFDB,0xDDFF,0xF000,0xF800,0x18C0,0xF000,0xFFFF,0xBBFF,
  52.     0xF000,0xF900,0xB002,0xF000,0xFFFF,0xAFFF,0xF000,0xF808,
  53.     0x2518,0xF000,0xFFFF,0x5FFF,0xF000,0xF821,0x4402,0xF000,
  54.     0xFFFF,0x3FFF,0xF000,0xF902,0x8810,0xF000,0xFFFE,0xBFFF,
  55.     0xF000,0xFFFD,0xDFFF,0xF000,0xFFFD,0xDE48,0xF000,0xFFFD,
  56.     0xDFFF,0xF000,0xFFFE,0x3FFF,0xF000,0xFFFF,0xFFFF,0xF000,
  57.     0xFFFF,0xFFFF,0xF000,0x0000,0x0000,0x0000,
  58. };
  59.  
  60. struct Image HelpI1 =
  61. {
  62.     0, 0,            /* Upper left corner */
  63.     37, 26, 2,            /* Width, Height, Depth */
  64.     HelpI1Data,                 /* Image data */
  65.     0x0003, 0x0000,        /* PlanePick, PlaneOnOff */
  66.     NULL            /* Next image */
  67. };
  68.  
  69. CHIP( UWORD ) HelpI2Data[] =
  70. {
  71. /* Plane 0 */
  72.     0x0000,0x0020,0x0000,0x00A0,0x0020,0x0000,0x0140,0xE020,
  73.     0x0000,0x0A81,0xF020,0x0000,0x0501,0xF03F,0xE000,0x0001,
  74.     0xF000,0x0000,0x0001,0xF000,0x0800,0x00FF,0xF7FF,0x0800,
  75.     0x0000,0xE000,0x0800,0x07FB,0xFF3F,0x0800,0x0000,0xE000,
  76.     0x0800,0x06FF,0xFFFD,0x0800,0x0000,0xE000,0x0800,0x07F7,
  77.     0xFAE7,0x0800,0x0000,0x4000,0x0800,0x07DE,0xFBFD,0x0800,
  78.     0x0000,0x4000,0x0800,0x06FD,0xF7EF,0x0800,0x0000,0xE000,
  79.     0x0800,0x0001,0xF000,0x0800,0x0001,0xF1B7,0x0800,0x0001,
  80.     0xF000,0x0800,0x0000,0xE000,0x0800,0x0000,0x0000,0x0800,
  81.     0x0000,0x0000,0x0800,0x7FFF,0xFFFF,0xF800,
  82. /* Plane 1 */
  83.     0xFFFF,0xFFD0,0x0000,0xFEAF,0xFFDC,0x0000,0xFD5F,0x1FDF,
  84.     0x0000,0xE0BE,0xEFDF,0xC000,0xF07E,0xEFC0,0x0000,0xFFFE,
  85.     0xEFFF,0xF000,0xFFFE,0xEFFF,0xF000,0xFF00,0x4800,0xF000,
  86.     0xFFFF,0x5FFF,0xF000,0xF804,0x40C0,0xF000,0xFFFF,0x5FFF,
  87.     0xF000,0xF900,0x4002,0xF000,0xFFFF,0x5FFF,0xF000,0xF808,
  88.     0x0518,0xF000,0xFFFF,0xBFFF,0xF000,0xF821,0x0402,0xF000,
  89.     0xFFFF,0xBFFF,0xF000,0xF902,0x0810,0xF000,0xFFFF,0x5FFF,
  90.     0xF000,0xFFFE,0xEFFF,0xF000,0xFFFE,0xEE48,0xF000,0xFFFE,
  91.     0xEFFF,0xF000,0xFFFF,0x1FFF,0xF000,0xFFFF,0xFFFF,0xF000,
  92.     0xFFFF,0xFFFF,0xF000,0x0000,0x0000,0x0000,
  93. };
  94.  
  95. struct Image HelpI2 =
  96. {
  97.     0, 0,            /* Upper left corner */
  98.     37, 26, 2,            /* Width, Height, Depth */
  99.     HelpI2Data,                 /* Image data */
  100.     0x0003, 0x0000,        /* PlanePick, PlaneOnOff */
  101.     NULL            /* Next image */
  102. };
  103.  
  104. /*
  105. **    Put up a simple requester.
  106. **/
  107. ULONG Req( struct Window *win, UBYTE *gadgets, UBYTE *body, ... )
  108. {
  109.     struct bguiRequest    req = { NULL };
  110.  
  111.     req.br_GadgetFormat    = gadgets;
  112.     req.br_TextFormat    = body;
  113.     req.br_Flags        = BREQF_CENTERWINDOW | BREQF_LOCKWINDOW;
  114.     req.br_Underscore    = '_';
  115.  
  116.     return( BGUI_RequestA( win, &req, ( ULONG * )( &body + 1 )));
  117. }
  118.  
  119. /*
  120. **    Object ID's.
  121. **/
  122. #define ID_QUIT                 1
  123. #define ID_HELP                 2
  124.  
  125. VOID StartDemo( void )
  126. {
  127.     struct Window        *window;
  128.     Object            *WO_Window, *GO_Quit, *GO_Help;
  129.     ULONG             signal = 0, rc, tmp = 0;
  130.     BOOL             running = TRUE;
  131.  
  132.     /*
  133.     **    Create the window object.
  134.     **/
  135.     WO_Window = WindowObject,
  136.         WINDOW_Title,        "Image Demo",
  137.         WINDOW_AutoAspect,    TRUE,
  138.         WINDOW_MasterGroup,
  139.             VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  140.                 StartMember,
  141.                     GO_Help = ButtonObject,
  142.                         BUTTON_Image,        &HelpI1,
  143.                         BUTTON_SelectedImage,    &HelpI2,
  144.                         LAB_Label,        "_Help",
  145.                         LAB_Underscore,         '_',
  146.                         LAB_Place,        PLACE_LEFT,
  147.                         FRM_Type,        FRTYPE_BUTTON,
  148.                         FRM_EdgesOnly,        TRUE,
  149.                         GA_ID,            ID_HELP,
  150.                     EndObject,
  151.                 EndMember,
  152.                 StartMember,
  153.                     HGroupObject,
  154.                         VarSpace( 50 ),
  155.                         StartMember, GO_Quit  = KeyButton( "_Quit",  ID_QUIT  ), EndMember,
  156.                         VarSpace( 50 ),
  157.                     EndObject, FixMinHeight,
  158.                 EndMember,
  159.             EndObject,
  160.     EndObject;
  161.  
  162.     /*
  163.     **    Object created OK?
  164.     **/
  165.     if ( WO_Window ) {
  166.         /*
  167.         **    Assign the keys to the buttons.
  168.         **/
  169.         tmp  = GadgetKey( WO_Window, GO_Quit,  "q" );
  170.         tmp += GadgetKey( WO_Window, GO_Help,  "h" );
  171.         /*
  172.         **    OK?
  173.         **/
  174.         if ( tmp == 2 ) {
  175.             /*
  176.             **    try to open the window.
  177.             **/
  178.             if ( window = WindowOpen( WO_Window )) {
  179.                 /*
  180.                 **    Obtain it's wait mask.
  181.                 **/
  182.                 GetAttr( WINDOW_SigMask, WO_Window, &signal );
  183.                 /*
  184.                 **    Event loop...
  185.                 **/
  186.                 do {
  187.                     Wait( signal );
  188.                     /*
  189.                     **    Handle events.
  190.                     **/
  191.                     while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  192.                         /*
  193.                         **    Evaluate return code.
  194.                         **/
  195.                         switch ( rc ) {
  196.  
  197.                             case    WMHI_CLOSEWINDOW:
  198.                             case    ID_QUIT:
  199.                                 running = FALSE;
  200.                                 break;
  201.  
  202.                             case    ID_HELP:
  203.                                 Req( window, "_Continue", ISEQ_C "This small demo shows you how to use\n"
  204.                                               "standard intuition images in button objects." );
  205.                                 break;
  206.  
  207.                         }
  208.                     }
  209.                 } while ( running );
  210.             } else
  211.                 Tell( "Could not open the window\n" );
  212.         } else
  213.             Tell( "Could not assign gadget keys\n" );
  214.         /*
  215.         **    Disposing of the window object will
  216.         **    also close the window if it is
  217.         **    already opened and it will dispose of
  218.         **    all objects attached to it.
  219.         **/
  220.         DisposeObject( WO_Window );
  221.     } else
  222.         Tell( "Could not create the window object\n" );
  223. }
  224.